The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
A monitoring application (referred to herein as a data consumer) on a client computer may receive updates that indicate the status of computing devices on a computer network (referred to herein as data producers). Ideally, a consumer application receives as many messages as necessary from each computing device to have an accurate view of the state of each computing device.
A data consumer may obtain the state of one or more data producers through poll-based methods (sometimes referred to as “pull-based” methods) or push-based methods. In poll-based solutions, the data consumer periodically polls or requests data from the data producer. However, if the period is too short, then the data consumer will get redundant state data. If the period is too long, then the state of the data producer can change between requests without the data consumer knowing about the one or more state changes. If the data consumer goes offline or stops polling data producer, then the data producer will not send data to the data consumer.
Push-based techniques follow a publisher/subscriber paradigm. In pushed-based solutions, a data consumer sends a request for data to the data producer. The request may indicate what data the data consumer is interested in and how the data consumer wants to receive the data. The data producer may send data to the data consumer according to the request.
Push-based techniques can be more efficient for several reasons. For the example, the data producer may send data to the data consumer when the data producer changes state. The data consumer need not send a separate request for each data update, which may reduce the number of interrupts or requests that a data publisher needs to process. Data producers can push updates simultaneously and issues with regard to requests arriving at different times at different systems may be avoided.
However, the data consumer has no control of how much bandwidth the data producer may use. For example, during some hours, the data producer may send so much data to the data consumer that the data consumer's network or processor bandwidth is overloaded. As a result, data or messages from the data producer or other computer systems to the data consumer may be delayed or dropped. The data consumer may become overloaded more quickly in a system with more than one data producer sending data to the data consumer.